package de.wittekind.bundesjugendspiele.server;

import java.io.IOException;

import de.wittekind.bundesjugendspiele.server.db.DBServer;
import de.wittekind.bundesjugendspiele.server.gui.GUI;
import de.wittekind.bundesjugendspiele.server.hsqldbTools.HSQLDBServer;
import de.wittekind.bundesjugendspiele.server.interfaces.Constants;
import de.wittekind.bundesjugendspiele.server.mysqlTools.MySQLServer;
import de.wittekind.bundesjugendspiele.server.rmiTools.impl.BasicRMIHelper;
import de.wittekind.bundesjugendspiele.server.rpcTools.RPCHelper;
import de.wittekind.bundesjugendspiele.server.setup.Setup;

public class Server {

	public static void main(String[] args) {
		BackendConfig config = null;
		try {
			config = new BackendConfig(Constants.BACKEND_CONFIG);
		} catch (IOException e) {
			e.printStackTrace();
		}
		if (!config.isExisting()) {
			Setup.setup(config);
		}
		IO.setup();
		RPCHelper helper = null;
		DBServer server = null;
		switch (config.getRPC()) {
		case RMI:
			helper = new BasicRMIHelper(config.getRMIHost(),
					config.getRMIName(), config.getRMIPort());
			break;
		}
		switch (config.getDatabase()) {
		case HSQLDB:
			server = new HSQLDBServer(helper);
			break;
		case MySQL:
			server = new MySQLServer(helper, config.getDbHost(),
					config.getDbUser(), config.getDbPassword(),
					config.getDbDatabase());
			break;
		}
		server.start();
		new GUI();
		server.stop();
		System.exit(0);
	}
}
